package com.tledu.study_springboot.controller;

import com.tledu.study_springboot.domain.Student;
import com.tledu.study_springboot.service.StudentService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.Map;

// 这个注解就告诉spring这是一个Controller
@Controller
// 全参构造的一个注解
//@AllArgsConstructor
//@RequestMapping("/home")
public class HelloContoller {

    // 注入这个依赖，具体注入的是哪个依赖  ，就是spring 容器帮我们注入，根据类型注入
    // spring容器会创建一个jdbcTemplate赋值给这个变量，我们就可以使用这个变量了
//    @Autowired
//    private JdbcTemplate jdbcTemplate;

    @Autowired
    private StudentService studentService;

    /**
     * 接受前端传递参数，可以直接通过变量进行接受
     * requestMapping 建立地址和处理的映射
     * 方法可以写参数，spring在调用这个方法的时候，就会设置这些参数的值
     * Model 这个参数的作用，就是往界面上设置值
     * 其他参数，就在调用接口的时候，可以传递这些参数，spring boot就会自动把这个参数封装进来，供我们使用
     */
    @RequestMapping("/home")
    public String home(Model model,String name) {
        System.out.println(name+"访问了");
        // jdbcTemplate可以直接通过它执行sql语句
        // Map就是键值对，Map<String,Object> 键是String类型的。值Object
        List<Student> list = studentService.list();
        model.addAttribute("list", list);
        // 从数据库中读取的数据
        model.addAttribute("name",name);
        // 富文本就是带html格式的文本
        model.addAttribute("richText", "<span style='color:hotpink'>提示语</span>");
        model.addAttribute("age",19);
        model.addAttribute("str","off");

        // return了一个字符串。这个字符串，spring boot会一个视图解析器，根据字符串的名字去templates中找到对应的html
        return "home";
    }

    @RequestMapping("/add")
    public String add() {
        return "add";
    }

    @RequestMapping("/save")
    public String save(Student student) {
        studentService.insert(student);
        // 保存没有问题之后，跳转到home
        return "redirect:home";
    }

}
